function PayByWx(appid, nonceStr, packages, timeStamp, paySign, ok, cancel, fail) {
    onBridgeReady(appid, nonceStr, packages, timeStamp, paySign, ok, cancel, fail);
}

if (typeof WeixinJSBridge == "undefined") {
    if (document.addEventListener) {
        document.addEventListener('WeixinJSBridgeReady', onBridgeReady,
            false);
    } else if (document.attachEvent) {
        document.attachEvent('WeixinJSBridgeReady', onBridgeReady);
        document.attachEvent('onWeixinJSBridgeReady', onBridgeReady);
    }
}

function onBridgeReady(appid, nonceStr, packages, timeStamp, paySign, ok, cancel, fail) {
    WeixinJSBridge.invoke('getBrandWCPayRequest', {
        "appId": appid, //公众号名称，由商户传入
        "timeStamp": timeStamp, //时间戳，自1970年以来的秒数
        "nonceStr": nonceStr, //随机串
        "package": packages, //预订单id
        "signType": "MD5", //微信签名方式
        "paySign": paySign //签名
    }, function (res) {
        // 使用以上方式判断前端返回,微信团队郑重提示：res.err_msg将在用户支付成功后返回ok，但并不保证它绝对可靠。
        if (res.err_msg == "get_brand_wcpay_request:ok") {
            ok()
        } else if (res.err_msg == "get_brand_wcpay_request:cancel") {
            cancel()
        } else if (res.err_msg == "get_brand_wcpay_request:fail") {
            fail()
        } else {
            $.alert(res.err_msg || res.errMsg, "支付失败")
        }
    });
}